package path

import (
	"errors"
	"github.com/gookit/goutil/fsutil"
	"io/ioutil"
	"net/http"
	"os"
	"strings"
)

// Ext 获取文件的后缀
func Ext(path string) string {
	for i := len(path) - 1; i >= 0 && path[i] != '/'; i-- {
		if path[i] == '.' {
			return path[i:]
		}
	}
	return ""
}

// GetRootPath 获取项目的根目录
func GetRootPath() string {
	dir, err := os.Getwd()
	if err != nil {
		return ""
	}
	return strings.Replace(dir, "\\", "/", -1)
}

// DownloadFile 下载网络文件
func DownloadFile(url string, savepath string) error {
	getData, err := http.Get(url)
	if err != nil {
		return err
	}
	content, err := ioutil.ReadAll(getData.Body)
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(savepath, content, 0777)
	if err != nil {
		return err
	}
	return nil
}

// FileExist 文件是否存在
func FileExist(path string) bool {
	return fsutil.FileExists(path)
}

// IsDir 判断路径是否为文件夹
func IsDir(path string) bool {
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()
}

// IsFile 判断路径是否为文件
func IsFile(path string) bool {
	return !IsDir(path)
}

// DeleteFile 删除本路路径文件
// @filepath 文件路径 (绝对)
func DeleteFile(filepath string) error {
	if err := os.Remove(filepath); err != nil {
		return errors.New("本地文件删除失败, err:" + err.Error())
	}
	return nil
}
